package com.cskaoyan._09string._01string;

/**
 * @author Macro_Ray
 * @since 2024/3/8 19:53
 */
// 字符串的构造
public class _01Define {
    public static void main(String[] args) {
        // 1.使用直接赋值的方式获取一个字符串对象
        String s1 = "abc";
        System.out.println(s1);
        // 当使用双引号直接赋值时，系统会检查该字符串在串池中是否存在
        // 不存在:创建新的
        // 存在:复用
        // 因此这种方式最简单，也节约内存


        // 2.使用new的方式获取一个字符串对象
        String s2 = new String();
        System.out.println("@" + s2 + "!");

        // 3.传递一个字符串，根据传递的字符串内容再创建一个新的字符串对象
        String s3 = new String("abc");
        System.out.println(s3);

        // 4.传递一个字符数组，根据字符数组的内容在创建一个新的字符串对象
        // 使用场景：我要修改字符串的内容     abc --> Qbc
        char[] chs = {'a', 'b', 'c', 'd'};
        String s4 = new String(chs);
        System.out.println(s4); //abcd

        // 5.传递一个字节数组，根据字节数组的内容再创建一个新的字符串对象
        // 使用场景：在网络当中传输的数据其实都是字节信息，
        // 我们一般要把字节信息进行转换，转成字符串，此时就要用到这个构造了
        byte[] bytes = {97, 98, 99, 100};
        String s5 = new String(bytes);
        System.out.println(s5);

    }
}
